namespace CastleSample.UI.Core
{
    /// <summary>
    /// Present a moudle of the the system
    /// </summary>
    public interface IModule
    {
        /// <summary>
        /// Unique name of the module.
        /// </summary>
        string Name { get; set; }

        /// <summary>
        /// Version of the module.
        /// Just for display.
        /// </summary>
        string Version { get; }

        /// <summary>
        /// Will been called by container when load the module.
        /// </summary>
        bool OnLoad();

        /// <summary>
        /// Will been called when container loaded all moudules.
        /// </summary>
        void OnStartup();

        /// <summary>
        /// Will been called by container when unload the module.
        /// </summary>
        void OnUnload();
    }
}